abstract class Animals {//抽象类不可以被实例化
  String _name = '动物';
  String _food = '食物';
  int? _legs = 2; // 私有属性 只有放在单独的文件中才能实现私有属性，外部不能修改
  // Animals({required String name, required String food, int? legs}) {
  //   //legs 可以为空
  //   String _name = '23'; // 如果构造函数中的名字和上面的重名了 需要使用this.xxx添加
  //   this._name = name;
  //   _food = food;
  //   _legs = legs; //可以为空时候 上面的int? _legs=2 也要加上
  // }
  eat() {
    print(_name + '吃' + _food);
  }

  run() {
    //实例方法可以访问实例属性 和静态属性
    print('${_name}有 ${_legs} 条腿 $str');
  }

  static String str = '嗨起来';
  static jump() {
    //  print(_name); 静态方法只能访问静态属性不能访问实例的属性
    print('$str 跳起来');
  }
}

class Dog extends Animals {
  // Dog() : super(name: '小狗', food: '骨头', legs: 4) {} //如果父类没有调用构造函数 这个可以不添加
  @override   //覆盖父类的值
  get _name => '小猫';

  @override
  get _food => '鱼';

   @override
  get _legs => 4;
}

// class Cat extends Animals {
  

// }
